<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //1.数组去重
        // var arr=[1,1,1,1,1,2,2,3,4];
        // //取出数组的每一项，跟后面的内容比较，如果相同，就删除后面的
        // //最后1位的时候，不用比较   i<arr.length-1
        // for(var i=0;i<arr.length-1;i++){
        //     var temp=arr[i];
        //    // 1----2,2,1,3,4
        //    // 2----2,1,3,4
        //    for(j=i+1;j<arr.length;j++){
        //        if(temp==arr[j]){
        //            arr.splice(j,1);//splice 存在数组塌陷问题
        //            j--;//解决当前数组塌陷问题
        //        }
        //    }
        // }

        // console.log(arr);


        //2.数组去重
        // var arr=[1,1,1,1,1,2,2,3,4];
        // var obj={};//1:1 2:2 3:3 4:4

        // for(var i=0;i<arr.length;i++){
        //     //如果对象中存在,就不存放到对象里面了---提高性能
        //     if(obj[arr[i]]==arr[i]){
        //        continue;
        //     }
        //     //如果不添加判断，后面会将前面的覆盖
        //     obj[arr[i]]=arr[i];
        // }
        // console.log(obj);

        // //获取对象中的value值，存到一个数组里
        // var newarr=Object.values(obj);
        // console.log(newarr);

       //3.数组去重
        // var arr=[1,1,1,1,1,2,2,3,4];
        // var obj={};//1:1 2:2 3:3 4:4

        // for(var i=0;i<arr.length;i++){
        //     //如果对象里面已经存在，就将数组里面的内容删除，不存放到对象里面
        //     //if(typeof (obj[arr[i]])!="undefined")
        //     if(obj[arr[i]]==arr[i]){
        //        arr.splice(i,1);//将数组里面的内容删除
        //        i--;//防止数组塌陷问题
        //        continue;//不存放到对象里面
        //     }
        //     //如果不添加判断，后面会将前面的覆盖
        //     obj[arr[i]]=arr[i];
        // }

        // console.log(arr);

        //升级版---少比较几轮
        // var arr=[1,1,1,1,1,2,2,3,4];
        // var obj={};//1:1 2:2 3:3 4:4

        // for(var i=0;i<arr.length;i++){
        //     //如果对象里面已经存在，就将数组里面的内容删除，不存放到对象里面 
        //     if(obj[arr[i]]==arr[i]){
        //         //[1,1,1,1,1,2,2,3,4]
        //         //[1,4,1,1,1,2,2,3,4]
        //        arr[i]=arr[arr.length-1];//将数组的最后一项覆盖当前项
        //         //[1,4,1,1,1,2,2,3]
        //        arr.length--;
        //        //再从4内容开始（4也有可能是重复）
        //        i--;
        //        continue;//不存放到对象里面
        //     }
        //     //如果不添加判断，后面会将前面的覆盖
        //     obj[arr[i]]=arr[i];
        // }
        // console.log(arr);


    //4.数组去重
    // var arr=[1,1,1,1,1,2,2,3,4];
    // var newarr=[];

    // for(var i=0;i<arr.length;i++){
    //     //判断一下新数组里面含有 某项 吗
    //     // 没有 添加那项给新数组
    //     // 有   不添加
    //    if(newarr.indexOf(arr[i])==-1){
    //       newarr.push(arr[i]);
    //    }
    // }

    // console.log(newarr);


    var arr=[1,1,1,1,1,2,2,3,4];//0x001
    var arr2=[11,31,11,1,1,12,2,3,4,56];//0x002

    function unique(arr){
        var newarr=[]; 
        for(var i=0;i<arr.length;i++){
            //判断一下新数组里面含有 某项 吗
            // 没有(-1) 添加那项给新数组
            // 有   不添加
            if(newarr.indexOf(arr[i])==-1){
                newarr.push(arr[i]);
            }
        }
        return newarr;
    }
    var res=unique(arr);//0x001---引用类型 实参 传递的是地址
    console.log(res);

    var res2=unique(arr2);//0x002
    console.log(res2);
    
    </script>
</body>
</html>